PostgreSQL PGPOOL-II
1 背景知识
PGPOOL-II 是 PostgreSQL 服务器与 PostgreSQL 客户端之间的中间件。采用 BSD 和 MIT 许可证发布。
PGPOOL-II 提供以下功能:
- 连接池
- 流复制
- 负载均衡
- 连接限制
- 看门狗
- 语句缓存查询
2 PGPOOL-II 功能介绍
2.1 Pgpool-II 应用兼容性
- PGPOOL-II 使用 PostgreSQL 的服务端和客户端协议,可以在服务端和客户端之间转发消息。
- 客户端认为 PGPOOL-II 是数据库服务器。
- 服务端认为 PGPOOL-II 是客户端。
- 所以 PGPOOL-II 对客户端和服务器是透明的,现有的数据库应用几乎不需要任何改动就可以启用 PGPOOL-II 。
2.2 高可用功能
- PGPOOL-II 可以使用多个 PostgreSQL 服务器提高可用性。
- 当某个节点发生故障,可以从服务器池移除损坏的服务器,保证业务连续性。这个功能叫做 主备切换。
- PGPOOL-II 还提供一个 watchdog 避免误报和脑裂的问题。
2.3 负载均衡
- PGPOOL-II 可以将查询分配给多个 PostgreSQL 服务器,提高读性能。这种功能叫做 负载均衡。
- 写入查询会发送到
Master
服务。 - 读操作会发送给
Standby
服务。
2.4 连接池
- PGPOOL-II 维持 PostgreSQL 服务器的连接。
- 这些连接可以重复使用,减少链接开销,提高系统整体吞吐率。
2.5 流复制在线恢复
1、只需要一条命令就能够实现数据库节点的在线恢复。
2、在线恢复与 Automatic Failover
一起使用时:
(1)自动将已经修复后的节点添加为备节点。
(2)还可以新增节点。
2.6 连接限制
PostgreSQL 数据库最大并发连接数是有限的,当达到这个限制时,新的连接将被拒绝。 PGPOOL-II 也有最大连接数限制,但是超过限制的连接会放在队列里面,不会立刻返回错误。
2.7 看门狗(watchlog)
看门狗可以在多个 PGPOOL-II 之间通信,避免单点故障和脑裂。
1、如果要避免脑裂至少需要三个 PGPOOL-II 节点。
2、看门狗对其他节点的 PGPOOL-II 进行相互兼容。
3、如果Master
PGPOOL-II 发生故障,Standby
将会升主。
2.8 语句缓存查询
1、语句缓存查询能够保存一个 SELECT 语句和对应的查询结果。
2、如果出现了相同的 SELECT , PGPOOL-II 将从缓存中取出结果值。
3、由于不涉及 SQL 解析和 PostgreSQL 的访问,所以取出速度非常快。
4、但是由于查询结果在变化,所以每次可能会增加存储数据的开销。
Note
更多功能和说明请参考:官方网站
3 PGPOOL-II 实战
PGPOOL-II 原理与架构
PGPOOL-II 环境准备
PGPOOL-II YUM部署
PGPOOL-II 源码部署
PGPOOL-II 源码配置
PGPOOL-II 日常维护
PGPOOL-II 编译安装文档